<?php

namespace App\Http\Controllers\Landscaping;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Landscaping\ParkRecord;
use App\Models\SystemManagement\Employee;
use Illuminate\Database\QueryException;
use App\Http\Requests\Landscaping\ParkRecordRequest;

/**
 * @group 基础信息管理->绿化->园林养护记录方案管理
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */

class ParkRecordController extends Controller
{
    /**
     * 园林养护记录方案查看列表
     *
     * @bodyParam record_name string required 绿化养护规程名
     * @bodyParam upload_id int required 上传人 外键 员工表
     *
     * @queryParam record_name string 绿化养护规程名
     * @queryParam record_keyword string 绿化养护关键词
     * @queryParam record_content text 绿化养护内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam record_user string 适用人群
     *
     *
     */
    public function index(Request $request)
    {
        $parkRecord = new ParkRecord;
        $data = $parkRecord->getList($request);
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 添加园林养护记录方案
     *
     * @bodyParam record_name string required 绿化养护规程名
     * @bodyParam record_keyword string required 绿化养护关键词
     * @bodyParam record_content text required 绿化养护内容
     * @bodyParam upload_id int required 上传人 外键 员工表
     * @bodyParam attached_page int required 附件页数
     * @bodyParam record_user string required 适用人群
     *
     * @queryParam record_name string 绿化养护规程名
     * @queryParam record_keyword string 绿化养护关键词
     * @queryParam record_content text 绿化养护内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam record_user string 适用人群
     *
     * @return \Illuminate\Http\Response
     */
    public function store(ParkRecordRequest $request)
    {
        try {
            $data = ParkRecord::create($request->all());
            return response()->json(encodeMsg($data,201));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '方案添加失败!'],400));
        }
    }

    /**
     * 查看园林养护记录方案
     *
     * @bodyParam id int required  方案ID
     *
     * @queryParam record_name string 绿化养护规程名
     * @queryParam record_keyword string 绿化养护关键词
     * @queryParam record_content text 绿化养护内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam record_user string 适用人群
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $data = ParkRecord::find($id);
        if($data == []) {
            return response()->json(encodeMsg(["message" => "没有该方案信息!"], 404));
        } else {
            return response()->json(encodeMsg($data,200));
        }
    }

    /**
     * 修改园林养护记录方案
     *
     * @bodyParam id int required 方案ID
     * @bodyParam record_name string required 绿化养护规程名
     * @bodyParam record_keyword string required 绿化养护关键词
     * @bodyParam record_content text required 绿化养护内容
     * @bodyParam upload_id int required 上传人 外键 员工表
     * @bodyParam attached_page int required 附件页数
     * @bodyParam record_user string required 适用人群
     *
     * @queryParam record_name string 绿化养护规程名
     * @queryParam record_keyword string 绿化养护关键词
     * @queryParam record_content text 绿化养护内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam record_user string 适用人群
     *
     * @return \Illuminate\Http\Response
     */
    public function update(ParkRecordRequest $request, $id)
    {
        $parkRecord = ParkRecord::find($id);
        if($parkRecord == []) {
            return response()->json(encodeMsg(["message" => "没有该方案信息!"], 404));
        }
        try {
            $parkRecord->update($request->all());
            return response()->json(encodeMsg($parkRecord,200));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '方案修改失败!'],400));
        }
    }

    /**
     * 删除园林养护记录方案
     *
     * @bodyParam id int required  方案ID
     * @response 204 {
     *   "message": "方案删除成功"
     * }
     *
     * @response 404 {
     *  "message": "没有该方案信息"
     * }
     *
     *
     */
    public function destroy($id)
    {
        $parkRecord = ParkRecord::find($id);
        if($parkRecord == []) {
            return response()->json(encodeMsg(["message" => "没有该方案信息!"], 404));
        }
        if($parkRecord->delete()) {
            return response()->json(encodeMsg(["message" => "方案删除成功"], 204));
        } else {
            return response()->json(encodeMsg(["message" => "方案删除失败"], 400));
        }
    }

    /**
     * 方案批量删除
     *
     * @bodyParam ids int required id集合字符串[格式：ids=1,2,3]
     * @response 204 {
     *   "message": "方案删除成功"
     * }
     *
     *
     */
    public function delete($ids)
    {
        $listId = explode(',', $ids);
        ParkRecord::whereIn('id',$listId)->delete();
        return response()->json(encodeMsg(["message" => "方案删除成功"], 204));
    }

    /**
     * 根据上传人id查询员工姓名
     *
     * @bodyParam  id int required  上传人id
     * @queryParam  name string 员工姓名
     *
     *
     */
    public function getNameById($id)
    {
        $data = Employee::where('id',$id)->first(['name']);
        if($data == []){
            return response()->json(encodeMsg(["message" => "没有该员工信息!"],404));
        }
        return response()->json(encodeMsg($data,200));
    }

}
